package org.mbcorp.sar.service;

import java.security.Principal;
import java.util.Date;
import java.util.List;

import org.mbcorp.sar.model.CalendarioJsonDTO;
import org.mbcorp.sar.model.Fase;
import org.mbcorp.sar.model.FiltroBusqueda;
import org.mbcorp.sar.model.Horario;
import org.mbcorp.sar.model.Operador;
import org.mbcorp.sar.model.Solicitud;

public interface HorarioService {

	public Horario grabar(Horario created);

    public Horario eliminar(Integer areaId) throws RuntimeException;

    public List<Horario> buscarTodos();
    
    public List<Horario> buscarTodos(Operador operador);

    public Horario buscarPorId(Integer id);

    public Horario actualizar(Horario updated) throws RuntimeException;
    
    public List<Horario> buscarPorOperador(Integer idOperador);
    
    public List<Horario> buscarIgnorados(Integer idOperador, Integer idSolicitud);
    
    public List<Horario> buscarRestringidos();
    
    public List<CalendarioJsonDTO> armarCalendario(List<Horario> horarios);
    
    public List<CalendarioJsonDTO> armarRestringidos(List<Horario> horarios);
    
    public List<CalendarioJsonDTO> armarPrevi(String datejs, int hora, int total, int idOperador);
	
    public Horario armarHorario(Date fechaInicio, int hora, int total, Operador operador, Fase fase);
    
    public boolean tieneColisiones(Horario horario, List<Horario> colisiones);
    
    public List<CalendarioJsonDTO> armarCalendarioSolicitud(Solicitud solicitud);
    
    public void activarHorario(Horario horario);
    
    public void ignorarHorario(Horario horario);
    
    public void darBaja(Horario horario);
    
    public List<CalendarioJsonDTO> armarCalendarioFase(Fase fase);

    public List<Horario> buscarHorariosActivosPorOperador(Principal currentUser);
    
    public List<Horario> buscarHorariosActivosPorOperador(FiltroBusqueda filtroBusqueda, Principal currentUser);
    
}
